Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Навигация по Денверовским проектам (Дмитрий Бойков)
Author Message
Дмитрий Бойков
Участник форума



Joined: 28 Mar 2003
Posts: 32
Карма: 2
   поощрить/наказать

Location: СПб

PostPosted: Sat Mar 12, 2005 1:03 am (написано за 16 секунд)
   Post subject: Навигация по Денверовским проектам
Reply with quote

Пользуюсь Денвером уже 2 года. Нравится. Хотелось бы поинтересоваться, возможно ли получить страницу со списком доменов и субдоменов примерно следующего вида:
Quote:
  1. localhost
    1. subdomain.localhost
  2. test1.ru
    1. subdomain.test1.ru
  3. test2.ru
  4. krisha.ru (krishi.ru)
    1. vasha.krisha.ru
    2. nasha.krisha.ru
    3. edet.krisha.ru
    4. protekla.krisha.ru
Понятно, что руками состряпать такую страницу не составит труда, но хотелось бы, что бы такая навигационная страничка генерилась на основе доменов и субдоменов созданных в Денвере. Было бы очень удобно. :) Можно ли это сделать с помощью скриптов?

И еще маленький вопрос не в тему.
Если в каталоге нет файла index.***, то окрывается список папок и файлов с колонками Name, Last modified, Size и Description. Полагаю, что для того чтобы у папки появился этот самый Description в ней должно что-то лежать (как файл readme.txt, например). Что это должно быть?
Спасибо.
Back to top
View user's profile Send private message
Ant
Сотрудник «Лаборатории»



Joined: 17 Jun 2003
Posts: 6840
Карма: 131
   поощрить/наказать


PostPosted: Sat Mar 12, 2005 1:19 am (спустя 15 минут; написано за 1 минуту 35 секунд)
   Post subject:
Reply with quote

Можно такое дело сделать — оно, собственно, уже готово — Денвер в hosts автоматически заносит все домены и поддомены, присутствующие в папке home. Осталось только приспособить это дело для вывода в браузер.

Можно вопрос — а зачем это надо?
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Sat Mar 12, 2005 1:21 am (спустя 2 минуты)
   Post subject:
Reply with quote

Дмитрий Бойков wrote:
Можно ли это сделать с помощью скриптов?
Надо парсить файл /usr/local/apache/conf/vhosts.conf, который создается при запуске Денвера. Никаких особых сложностей быть тут не должно, что у Вас не получается?
Дмитрий Бойков wrote:
Полагаю, что для того чтобы у папки появился этот самый Description в ней должно что-то лежать (как файл readme.txt, например). Что это должно быть?
Точно не знаю. Попробуйте поискать ответ в документации Apache - модуль называется autoindex, кажется.
Back to top
View user's profile Send private message Send e-mail
Дмитрий Бойков
Участник форума



Joined: 28 Mar 2003
Posts: 32
Карма: 2
   поощрить/наказать

Location: СПб

PostPosted: Sat Mar 12, 2005 4:53 pm (спустя 15 часов 31 минуту; написано за 10 минут)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
Никаких особых сложностей быть тут не должно, что у Вас не получается?
Все получилось, спасибо. Просто я почему-то решил, что из ... /home/site.ru будет не дотянуться до более высокого уровня. К тому же не знал что парсить...

Что у меня в итоге получилось:
В каталоге /home/localhost/www/Tools/ можно создать новый каталог (у меня это sitelist) и поместить туда файл index.php следующего содержания:
Code (php): скопировать код в буфер обмена
<?$TITLE="Список зарегистрированных сайтов"; include "{$_SERVER['DOCUMENT_ROOT']}/_header.php"?>
<table width=70% cellpadding=5 cellspacing=2>
<tr valign=top>
  <td>
<?
$file = file (www.php.net/file)(substr (www.php.net/substr)($_SERVER['DOCUMENT_ROOT'],0,2).'/usr/local/apache/conf/vhosts.conf');
for($i=0; $i < count (www.php.net/count)($file); $i++){
        if(ereg (www.php.net/ereg)('^.*ServerName.*"(.*)".*$', $file[$i], $mas)){
                if(!(false === strpos (www.php.net/strpos)($mas[1], "www."))){
                        $domains[] = str_replace (www.php.net/str_replace)("www.","",$mas[1]);
                } else {
                        $subdomains[] = $mas[1];
                }
        }
}
sort (www.php.net/sort)($domains);
sort (www.php.net/sort)($subdomains);
for($i=0; $i < count (www.php.net/count)($domains); $i++){
        print (www.php.net/print) "<a href=http://{$domains[$i]}><b>{$domains[$i]}</b></a></br>";
        for($j=0; $j < count (www.php.net/count)($subdomains); $j++){
                if(!(false === strpos (www.php.net/strpos)($subdomains[$j], $domains[$i]))){
                        print (www.php.net/print) "<dd><a href=http://{$subdomains[$j]}>{$subdomains[$j]}</a></br>";
                }
        }
}
?>
  </td>
</tr>
</table>
<?include "{$_SERVER['DOCUMENT_ROOT']}/_footer.php"?>
тогда в списке утилит localhost появится новый пункт. Код далек от совершенства, т.к я пока делетант в этом деле, но работает! :)
Ant wrote:
Можно вопрос — а зачем это надо?
Когда накапливается достаточное количество сайтов можно запутаться в названиях... В общем я собираюсь использовать это так: Сделать ярлык (в Виндах, на рабочем столе) на страницу со списком сайтов а от туда по линкам уже добираться до самих сайтов. (Ну, лень мне адрес рукой бить. 8) )
Back to top
View user's profile Send private message
Константин Жинько [tIT]
Сотрудник «Лаборатории»



Joined: 12 Jun 2004
Posts: 2264
Карма: 106
   поощрить/наказать

Location: Москва

PostPosted: Sat Mar 12, 2005 7:51 pm (спустя 2 часа 58 минут; написано за 47 секунд)
   Post subject:
Reply with quote

Дмитрий Бойков
+1 =)
Полезная мулька... ИМХО, стоит включить в базовый пакет, только может код отредактировать %
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Sun Mar 13, 2005 2:10 am (спустя 6 часов 19 минут; написано за 53 секунды)
   Post subject:
Reply with quote

Ну, тогда уж вот так:
Code (php): скопировать код в буфер обмена
<?$TITLE="  "; include "{$_SERVER['DOCUMENT_ROOT']}/_header.php"?>
<?
// Original idea by: Dmitry Boykov (http://forum.dklab.ru/users/DmitryBoykov/)
$file = file (www.php.net/file)('/usr/local/apache/conf/vhosts.conf');
foreach ($file as $line) {
  if (preg_match (www.php.net/preg_match)('/^[^#]* ServerName \s+ "?([^"]*)"?/six', $line, $p)){
    $dom = preg_replace (www.php.net/preg_replace)('/^www\./si', '', $p[1]);
    $domains[$dom] = join (www.php.net/join)(".", array_reverse (www.php.net/array_reverse)(preg_split (www.php.net/preg_split)('/\./', $dom)));
  }
}
asort (www.php.net/asort)($domains);

$prev = false;
foreach ($domains as $dom=>$parts) {
  if (!$prev || !preg_match (www.php.net/preg_match)('/'.preg_quote($prev, '/').'$/si', $dom)) {
    echo (www.php.net/echo) "<a href=\"http://{$dom}\"><b>{$dom}</b></a></br>";
    $prev = $dom;
  } else {
    print (www.php.net/print) "<dd><a href=\"http://{$dom}\">{$dom}</a></br></dd>";
  }
}
?>
<?include "{$_SERVER['DOCUMENT_ROOT']}/_footer.php"?>
В новой версии будет.

Кстати, по-хорошему надо бы добавить и парсинг httpd.conf, т.к. там тоже могут домены быть. Ну и парсинг портов для тех сайтов, которые висят на других портах (если они есть).
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Sun Mar 13, 2005 2:13 am (спустя 2 минуты)
   Post subject:
Reply with quote


М

Перенесено из форума: Базовый пакет :: Денвер.
Перенесено в форум: Полезные советы :: Денвер.
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML